package com.briup.day05;

import java.util.Date;

/**
 * @author lining
 * @date 2024/1/12 9:38
 */
public class Test2 {

    public static void createArr(int length){
        if(length > 0){
            int[] arr = new int[length];
            System.out.println(arr);
        }else {
            System.out.println("参数错误");
        }
//        String[] arr2 = new String[]; //编译错误
    }
    public static void method(int length){
        int[] arr = new int[length];
        System.out.println(arr);
        //将新建的长度为6的数组地址值赋值给变量arr
        arr = new int[length*2];
        System.out.println(arr);
        System.out.println(arr.length);//6
        arr[0] = 5;
    }
    public static void method2(int length){
        //每个元素都是"A"
        String[] arr = new String[length];
        //for获取每个元素
        for (int i = 0; i < arr.length; i++) {
            arr[i] = "A";
        }
        //while遍历打印
        int j = 0;
        while(j < arr.length){
            System.out.println("元素："+arr[j]);
            j++;
        }
    }
    public static void method3(int length){
        //基本数据类型  char '\u0000' NUL  int  double 0000 0000 0000 0000
        boolean arr[] = new boolean[length]; //0000 0000-->false
        System.out.println(arr[0]);//输出值？
        //引用类型（类类型）
        Date[] dates = new Date[10];
        System.out.println(dates[4]);//输出值？ 默认值 null  每个元素都是没有时间对象
        dates[4] = new Date();
    }
    public static void method4(){
        //一个长度为0的数组
        int[] arr = new int[]{};
        int[] arr2 = {};
        System.out.println(arr.length);
        arr[0] = 1;  // 0 > length-1  导致运行异常
        /*
            错误： 编译错误 javac  运行错误 java  结果错误（与预期不同）
             数组下标越界异常： 当下标值大于length-1 导致错误
            Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at com.briup.day05.Test2.method4(Test2.java:57)
	at com.briup.day05.Test2.main(Test2.java:61)
         */
    }
    public static  void method5(){
        int[] arr = new int[]{1,2,3,4};
        int[] arr2 = {1,2,3,4,5};
        //变量定义和赋值
        int[] arr3  = null;
//        arr3 = {1,2,3,4};  编译错误
//        arr = new int[4]{1,2,3,4}; 编译错误
        System.out.println(arr);
    }
    public static void method6(int[] arr){
        /*
           NullPointerException 空指针异常
           当一个引用类型的变量调用(.)方法或者属性。如果引用变量不指向任何对象，指向null.导致空指针异常
         */
        System.out.println(arr.length);
        //运行错误发生后，后面代码不会执行，错误交给JVM。JVM停止调用剩余代码。将异常信息打印到控制台
        System.out.println(arr[10]);

    }
    //使用字符串String 模拟一个空指针异常
    //变量s可能为null,可能导致空指针异常
    public static void method7(String s){
        //参数验证
        if(s != null){
            s.length();//调用一个方法.导致空指针
        }
    }
    public static void method8(String s){
        //参数验证
        if(s == null){
            return;
        }
        s.length();//调用一个方法.导致空指针
    }

    public static void main(String[] args) {
        //定义实际参数
//        int[] arr = {1,2,3,4};
//        method6(arr);
//        int[] arr = null;
//        method6(arr);
        method7(null);
    }
}
